#1）定义一个lambda函数，实现功能：
# 参数为x,判断该参数是奇数还是偶数，是奇数返回False,是偶数返回True
b=int(input('请输入一个数:'))
a=lambda x: x%2==0    #定义的lambda函数，用a表示
print(a(b))     #a(b),b表示lambda函数里的参数x

#使用高阶函数实现以下功能
#2） list1 = [5,23,1,5,7,98,6,7]
#将列表中的所有数值,都该成它的平方+10
list1 = [5,23,1,5,7,98,6,7]
#分步写，便于理解
a=lambda x:x*x+10    #定义一个lambda函数，返回值为参数的平方+10
b=map(a,list1)       #用高阶函数对列表中的元素进行修改
print(list(b))       #将输出结果转为列表

#使用高阶函数map和匿名函数lambda一步到位
print(list(map(lambda x:x*x+10,list1)))


#3）lst = ["tom","lily",'张三',"lucy","阿斯蒂芬","sdafa"]
#将名字中姓张的排除掉
lst = ["tom","lily",'张三',"lucy","阿斯蒂芬","sdafa"]
#分布写
def sys(x):
    if x.startswith('张')!=True:   #startswith为字符串中判断以什么开头的用法，他的结果以布尔值表示
        return True                #endswith为字符串中判断以什么结尾的用法，他的结果以布尔值表示
    else:
        return False
c=filter(sys,lst)
print(list(c))

#总写
print(list(filter(lambda x:x.startswith('张')!=True,lst)))

#4）lst = ["tom","lily",'jack',"lucy","sdfen","sdafa"]
#根据第二个字母开始到后面的字母，进行自然顺序排序
lst = ["tom","lily",'jack',"lucy","sdfen","sdafa"]
lst2 = sorted(lst,key=lambda x:x[1][::])
print(lst2)

#5）定义一个装饰器，实现功能：判断一个函数的用户名参数是不是admin,是的话执行函数，
# 不是的话，打印告知没有权限执行该方法
def a(x):
    def b1(n):
        if b=='admin':
            c=x(b)
            return c
        else:
            print('没有权限执行该办法')
            return x(b)
    return b1

@a
def p(x1):
    pass
p('admin')

#1） 编写一个装饰器，将函数返回值转换为字符串
def a(x):
    def b(*args,**keys):
        c=x(*args,**keys)
        return str(c)
    return b
@a
def d(n1,n2):
    return n1+n2
print(d(2,3))
print(type(d(2,3)))
#2）使用filter()筛选出列表[12,17,24,19,16]中的偶数
a=[12,17,24,19,16]
print(list(filter(lambda x:x%2==0,a)))
#3）思考三层装饰器怎么写